#define _CRT_SECURE_NO_WARNINGS

//#include<stdio.h>
//int cmp(const void* x, const void* y)
//{
//	return (*(int*)y - *(int*)x);
//}
//int main()
//{
//	int n;
//	int num[1000000];
//	int days = 0;
//	int das_ = 1;
//	scanf("%d", &n);
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", &num[i]);
//	}
//	qsort(num, n, 4, cmp);
//	int curentneed = 0;
//	int i = 0;
//	while (i < n)
//	{
//		curentneed = das_;
//		while (i < n && curentneed>0)
//		{
//			if (num[i] >= das_)
//			{
//				curentneed = 0;
//				num[i] -= das_;
//			}
//			else
//			{
//				curentneed -= num[i];
//				i++;
//			}
//		}
//		if (curentneed == 0)
//		{
//			days++;
//			das_++;
//		}
//		else
//		{
//			break;
//		}
//	}
//	printf("%d", days);
//	return 0;
//}

//#include<string.h>
//#include<ctype.h>
//#include<stdio.h>
//int cmp(const void* x, const void* y)
//{
//	return (*(int*)y - *(int*)x);
//}
//int main()
//{
//	char ch[100];
//	int n;
//	int len;
//	scanf("%d", &n);
//	getchar();
//	gets(ch);
//	len = strlen(ch);
//	for (int i = 0; i < len; i++)
//	{
//		if (islower(ch[i]))
//		{
//			toupper(ch[i]);
//		}
//		else if (isupper(ch[i]))
//		{
//			tolower(ch[i]);
//		}
//	}
//	int flag1 = 0;
//	int flag2 = 0;
//	sqrt(ch, len, 1, cmp);
//	for (int i = 0; i < len; i++)
//	{
//		flag2 = 0;
//		flag1 = 0;
//		if (isalnum(ch[i]))
//		{
//			flag1 = 1;
//		}
//		int j = 0;
//		for (j; j < i; j++)
//		{
//			if (ch[j] == ch[i])
//			{
//				continue;
//			}
//			flag2 = 1;
//		}
//		if (flag1 == 1 && flag2 == 1)
//		{
//			printf("%c", ch[i]);
//		}
//	}
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//#include <ctype.h>
//int remove(char str[]) {
//    int len = strlen(str);
//    int index = 0; 
//    char seen[128] = { 0 };
//    for (int i = 0; i < len; i++) {
//        if (!seen[(unsigned char)str[i]]) { 
//            seen[(unsigned char)str[i]] = 1;
//            str[index++] = str[i];
//        }
//    }
//    str[index] = '\0';
//    return index;
//}
//void process(char str[]) {
//    int len = strlen(str);
//    char temp[81] = { 0 }; 
//    int index = 0;
//    for (int i = 0; i < len; i++) {
//        if (isalnum(str[i])) {
//            temp[index++] = islower(str[i]) ? toupper(str[i]) : tolower(str[i]);
//        }
//    }
//    temp[index] = '\0'; 
//    remove(temp);
//    len = strlen(temp);
//    for (int i = 0; i < len - 1; i++) {
//        for (int j = 0; j < len - 1 - i; j++) {
//            if (temp[j] < temp[j + 1]) {
//                char t = temp[j];
//                temp[j] = temp[j + 1];
//                temp[j + 1] = t;
//            }
//        }
//    }
//    strcpy(str, temp);
//}
//int main() {
//    int n;
//    char A[81];
//    scanf("%d", &n);
//    getchar();
//    fgets(A, 81, stdin);
//    A[strcspn(A, "\n")] = '\0';
//    process(A);
//    for (int i = 0; i < n; i++) {
//        printf("%s", A);
//    }
//    return 0;
//}


//#include<stdio.h>
//#include<math.h>
//int isprime(int num)
//{
//	if (num < 2)return 0;
//	for (int i = 2; i * i <= num; i++)
//	{
//		if (num % i == 0)
//		{
//			return 0;
//		}
//	}
//	return 1;
//}
//void combination(int num[], int n, int k, int start, int depth, int sum, int* count)
//{
//	if (depth == k)
//	{
//		if (isprime(sum))
//		{
//			(*count)++;
//		}
//		return;
//	}
//	for (int i = start; i < n; i++)
//	{
//		combination(num, n, k, i + 1, depth + 1, sum + num[i], count);
//	}
//}
//int main()
//{
//	int num[100];
//	int n, k;
//	int count = 0;
//	scanf("%d %d", &n, &k);
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", &num[i]);
//	}
//	combination(num, n, k, 0, 0, 0, &count);
//	printf("%d", count);
//	return 0;
//}


#include <stdio.h>
#include <string.h>
#include <ctype.h>
int remove(char str[]) {
    int len = strlen(str);
    int index = 0;
    char seen[128] = { 0 };
    for (int i = 0; i < len; i++) {
        if (!seen[(unsigned char)str[i]]) {
            seen[(unsigned char)str[i]] = 1;
            str[index++] = str[i];
        }
    }
    str[index] = '\0';
    return index;
}
void process(char str[]) {
    int len = strlen(str);
    char temp[81] = { 0 };
    int index = 0;
    for (int i = 0; i < len; i++) {
        if (isalnum(str[i])) {
            temp[index++] = islower(str[i]) ? toupper(str[i]) : tolower(str[i]);
        }
    }
    temp[index] = '\0';
    remove(temp);
    len = strlen(temp);
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - 1 - i; j++) {
            if (temp[j] < temp[j + 1]) {
                char t = temp[j];
                temp[j] = temp[j + 1];
                temp[j + 1] = t;
            }
        }
    }
    strcpy(str, temp);
}
int main() {
    int n;
    char A[81];
    scanf("%d", &n);
    getchar();
    fgets(A, 81, stdin);
    A[strcspn(A, "\n")] = '\0';
    process(A);
    for (int i = 0; i < n; i++) {
        printf("%s", A);
    }
    return 0;
}